generic
   type individu(<>) is private;
   with function image_individu(n : individu) return string;
   type texte(<>) is private;
   with function image_texte(n : texte) return string;
package Murs is
   type mur is private;
   type post is private;
   function creer(n : individu) return mur;
   function afficher(mu : mur; n : individu; t : texte; i : natural) return mur;
   function est_defini(mu : mur; i : natural) return boolean;
   function auteur(mu : mur; i : natural) return individu;
   function to_string(mu : mur) return string;
   function nombre_posts_mur(mu : mur) return natural;
   function ieme_post(mu : mur; i : natural) return texte;
private
   type commentaire is record
      auteur : access individu;
      message : access texte;
      identifiant : natural;
   end record;

   type commentaires is array(positive range <>) of commentaire;

   type post is record
      auteur : access individu;
      message : access texte;
      identifiant : natural;
      tab_commentaires : access commentaires;
   end record;

   type posts is array(positive range <>) of post;

   type mur is record
      proprietaire : access individu;
      tab_posts : access posts;
   end record;

end Murs;





